package ru.spbu.math.seabattle.client;

import java.io.Serializable;

import ru.spbu.math.seabattle.entity.GameResult;
import ru.spbu.math.seabattle.entity.PlayerID;
import ru.spbu.math.seabattle.entity.TurnResult;

public interface IClient extends Serializable {
		
	void welcome(PlayerID givenID, String givenName);
	
	void onGameRequest(PlayerID opponentID, String PlayerName);
	void onGameStarted();
	
	void onGameRequestRefused(PlayerID opponentID);
	void onGameRequestWithdrawn(PlayerID opponentID);
	
	void onYourTurnStarted();
	void onYourTurnEnded(TurnResult result);
	
	void onEnemyTurnStarted();
	void onEnemyTurnEnded(TurnResult result);
	
	void onGameEnded(GameResult result);
	
	void onPlayerJoined(PlayerID id, String name);
	void onPlayerLeft(PlayerID id);
	
	void onPlayerAddedOrRemoved(boolean added, PlayerID id, String name);
}
